//
//  RoomItem.h
//  musicController
//
//  Created by citymap on 14-9-4.
//  Copyright (c) 2014年 citymap. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "PlayMusic.h"

#define MusicLoc_AUX        @"AUX"
#define MusicLoc_BT         @"BT"
#define MusicLoc_FM         @"FM"
#define MusicLoc_LOCAL      @"LOCAL"
#define MusicLoc_USB        @"USB"
#define MusicLoc_SD         @"SD"
#define MusicLoc_QQ         @"QQ"
#define MusicLoc_DLNA       @"DLNA"
#define MusicLoc_Fav        @"我的收藏"

#define Mode_Single     1  // 播放控制－单曲循环
#define Mode_Circle     2  // 播放控制－列表循环
#define Mode_Order      3  // 播放控制－顺序播放
#define Mode_Random     4  // 播放控制－随机播放

#define EQ_Normal       5  // EQ模式－普通模式
#define EQ_GuDian       6  // EQ模式－古典模式
#define EQ_JueShi       7  // EQ模式－爵士模式
#define EQ_YaoGu        8  // EQ模式－摇滚模式
#define EQ_LiuXing      9  // EQ模式－流行模式

/** 设备信息类 */
@interface RoomItem : NSObject

// ============= 外部变量 ==============
/** 设备名称 */
@property(nonatomic, copy) NSString *m_strName;

/** 设备类型 */
@property(nonatomic, copy) NSString *m_strType;

/** 设备的MAC地址 */
@property(nonatomic, copy) NSString *m_strMac;

/** 设备链接状态 */
@property(nonatomic, assign) BOOL m_bDevContect;

/** 设备的IP地址 */
@property(nonatomic, copy) NSString *m_strIP;

/** 设备的端口 */
@property(nonatomic, assign) int m_port;

/** 上次更新的时间差 */
@property(nonatomic, assign) int m_time;

/** 当前播放的音乐封面 */
@property(nonatomic, retain) UIImage *m_imgIcon;

/** 当前播放的音乐名字 */
@property(nonatomic, copy) NSString *m_strMusicName;

/** 播放状态 */
@property(nonatomic, copy) NSString *m_strStatus;

/** 当前播放的音乐演唱者 */
@property(nonatomic, copy) NSString *m_strPerName;

/** 播放次数 */
@property(nonatomic, assign) int m_playNum;

/** 当前播放的音乐 */
@property(nonatomic, retain) PlayMusic *m_playMusic;

/** 存储音乐列表字典：根据Key：Location来存储音乐列表 */
@property(nonatomic, retain) NSMutableDictionary *m_dicMusicList;

/** 音乐图标，以对应的音乐folder为Key */
@property(nonatomic, retain) NSMutableDictionary *m_dicIcon;

/** 定时任务列表 */
@property(nonatomic, retain) NSArray *m_aryTask;

/** 音乐所在位置 */
@property(nonatomic, copy) NSString *m_strListLocation;

/** 设备时间，格式：yyyy-mm-dd hh:mm */
@property(nonatomic, copy) NSString *m_strDevTime;

/** 睡眠设置-当前时间*/
@property(nonatomic, assign) long long m_sleepTime_cur;

/** 睡眠设置-开始时间 */
@property(nonatomic, assign) long long m_sleepTime_begin;

/** 睡眠设置-结束时间 */
@property(nonatomic, assign) long long m_sleepTime_end;

/** 睡眠时间的数组索引 */
@property(nonatomic, assign) int m_sleepIndex;

@property(nonatomic, assign) int m_connectDeplay;

@property(nonatomic, retain) NSMutableDictionary *m_dicExtra;
// =====================================

// ============== 外部函数 ==============
/** 开启设备链接 */
- (void) startConnect;

/** 断开设备链接 */
- (void) closeConnect;

/** 播放控制：YES-播放， NO-暂停 */
- (void) playMusic:(BOOL)v_bIsPlay;

/** 播放指定ID的音乐 */
- (void) playMusicWithID:(int)v_id;

/** 设置音乐音量，音量取值范围是[0, 30] */
- (void) changeVol:(int)v_vol;

/** 设置音乐音量，参数值0.0f ~ 1.0f，函数内部会根据音量最大值而转换 */
- (void) changeVolWithFloat:(float)v_fVol;

/** 播放控制 */
- (void) playControl:(int)v_option;

/** 设置当前播放的音乐进度，毫秒单位 */
- (void) changeMusicValue:(int)v_value;

/** 设置设备的时间，时间以毫秒为单位 */
- (void) setDevTime:(long long)v_timeMillis;

/** 发送定时任务 */
- (void) sendDevDSTask:(NSArray*)v_dic;

/** 发送请求设备时间的命令，结果值存储在m_strDevTime */
- (void) getDevTime;

/** 设置音源，取值 MusicLoc_** */
- (void) setMusicLoc:(NSString*)v_strLoc;

/** 设备关机 */
- (void) powerOff;

/** 获取指定音源的音乐列表 */
- (NSArray*)getMusicListAtLoc:(NSString*)v_strLoc;

/** 启动设备 */
- (void) startDevice;

/** 返回设备连接状态 */
- (BOOL) isContected;

/** 返回播放模式，返回值Mode_*** */
- (int) getPlayMode;

/** 发送请求睡眠时间的命令，结果值存储在m_sleepTime_cur等变量 */
- (void) getSleepTime;

/** 设置睡眠时间，取值是0 ~6, 对面界面上的单选按钮，0表示取消睡眠设置，1-15分钟，2-30分钟，3-45分钟，4-1小时，5-2小时，6-3小时，1-15分钟，2-30分钟，3-45分钟，4-1小时，5-2小时，6-3小时 */
- (void) setSleepTime:(int)v_sleepTag;

/** 设置设备名称 */
- (void) setDevName:(NSString*)v_strDevName;

/** 发送音乐列表的请求，结果值存储在m_dicMusicList */
- (void) getMusicList;

/** 返回目前设备的EQ，返回值EQ_*** */
- (int) getEQ;

/** 发送获取音乐封面的请求，结果值存储在m_dicIcon中 */
- (void) getMusicImg:(NSString*)v_strPath;

/** 发送请求定时任务的命令，结果值存储在m_aryTask */
- (void) getDevTask;

/** 播放下一首 */
- (void) playNext;

/** 播放上一首 */
- (void) playPre;

/** 设置播放模式
 * v_playMode - 播放模式，取值Mode_*/
- (void) setPlayMode:(int)v_playMode;

/** 设置EQ模式
 * v_eq - 播放模式，取值EQ_*/
- (void) setEQ:(int)v_eq;

/** 将目前播放的音乐设置为收藏/不收藏 */
- (void) musicFav;

// =====================================
@end
